欧美一区2区三区4区公司二百,国产精品婷婷午夜在线观看,自拍偷拍亚洲精品,国产美女诱惑一区二区

如何設(shè)置Ansible庫存文件

什么是 Ansible?Ansible 是一款功能強(qiáng)大且易于使用的現(xiàn)代應(yīng)用程序部署和配置管理工具。它使得從單個(gè)控制節(jié)點(diǎn)處理數(shù)以千計(jì)的遠(yuǎn)程服務(wù)器(也稱為受管節(jié)點(diǎn))變得容易。Ansible 允許您輕松地重現(xiàn)配置環(huán)境,并避免您登錄到單個(gè)服務(wù)器并一臺(tái)一臺(tái)地配置它們。

如何設(shè)置Ansible庫存文件

即使在 Ansible 中跟蹤數(shù)以千計(jì)的遠(yuǎn)程服務(wù)器也可能變得很麻煩,因此了解如何使用稱為清單文件的特殊文件對(duì)托管節(jié)點(diǎn)進(jìn)行分組和定位至關(guān)重要。

什么是 Ansible 庫存文件?

Ansible 清單文件允許系統(tǒng)管理員跟蹤他們管理的遠(yuǎn)程系統(tǒng)。默認(rèn)清單文件稱為hosts文件,位于/etc/ansible目錄中。這是指定所有受管遠(yuǎn)程節(jié)點(diǎn)的地方。

Ansible 還使您可以靈活地在控制節(jié)點(diǎn)上的首選位置創(chuàng)建自定義清單文件以滿足您的偏好。當(dāng)您擁有復(fù)雜的環(huán)境并且需要將受管節(jié)點(diǎn)隔離到單獨(dú)的清單文件而不是將它們?nèi)糠旁趆osts文件中時(shí),這是理想的選擇。

在本指南中,您將安裝 Ansible 并在控制節(jié)點(diǎn)上設(shè)置自定義清單文件。

先決條件

為了演示如何在清單文件中定義遠(yuǎn)程服務(wù)器,我們將使用以下設(shè)置,其中所有服務(wù)器都部署了 Ubuntu 20.04 操作系統(tǒng):

Ansible 控制節(jié)點(diǎn):這是安裝 Ansible 的服務(wù)器。它用于通過 SSH 連接到您的托管節(jié)點(diǎn)并管理它們。

托管節(jié)點(diǎn):這些是將從 Ansible 控制節(jié)點(diǎn)管理的遠(yuǎn)程節(jié)點(diǎn):

節(jié)點(diǎn) 1:?198.148.118.68

節(jié)點(diǎn) 2:?198.148.118.129

我們的小型實(shí)驗(yàn)室設(shè)置足以說明您如何使用 Ansible 清單文件來管理您的遠(yuǎn)程系統(tǒng)。但是,您可以擁有的托管節(jié)點(diǎn)的數(shù)量沒有限制。

在 Ubuntu 20.04 上安裝 Ansible

我們的第一步是在控制節(jié)點(diǎn)上安裝 Ansible。因此,通過 SSH 或使用免費(fèi)的 SSH 客戶端(如PuTTY?)登錄到您的控制節(jié)點(diǎn)。

登錄后,通過運(yùn)行以下命令更新系統(tǒng)包列表。-y 選項(xiàng)自動(dòng)假定“是”作為對(duì)所有命令行提示的回答。

sudo apt update

如何設(shè)置Ansible庫存文件

接下來,安裝 Ansible:

sudo apt install -y ansible

如何設(shè)置Ansible庫存文件

這將安裝 Ansible 和許多其他附加包和依賴項(xiàng)。完成后,通過檢查 Ansible 的版本來驗(yàn)證是否安裝了 Ansible:

ansible –-version

下面的輸出證明我們已經(jīng)成功安裝了 Ansible 2.9.6 版本。

如何設(shè)置Ansible庫存文件

如前所述,默認(rèn)清單文件位于 /etc/ansible/hosts。使用首選命令行編輯器打開文件后,您將看到一些關(guān)于預(yù)期內(nèi)容的基本指南。

sudo nano /etc/ansible/hosts

# This is the default ansible 'hosts' file.
#
# It should live in /etc/ansible/hosts
#
#   - Comments begin with the '#' character
#   - Blank lines are ignored
#   - Groups of hosts are delimited by [header] elements
#   - You can enter hostnames or ip addresses
#   - A hostname/ip can be a member of multiple groups

# Ex 1: Ungrouped hosts, specify before any group headers:

## green.example.com
## blue.example.com
## 192.168.100.1
## 192.168.100.10

# Ex 2: A collection of hosts belonging to the 'webservers' group:

## [webservers]
## alpha.example.org
## beta.example.org
## 192.168.1.100
## 192.168.1.110

默認(rèn)情況下,所有條目都被注釋掉并且沒有指定主機(jī)。在下一步中,您將連接到遠(yuǎn)程主機(jī)并創(chuàng)建自定義清單文件。

設(shè)置無密碼 SSH 連接

Ansible 是一種無代理部署工具,它使用 SSH 協(xié)議與遠(yuǎn)程節(jié)點(diǎn)進(jìn)行通信。為了無縫地實(shí)現(xiàn)這一點(diǎn),我們需要采取額外的步驟,在 Ansible 控制節(jié)點(diǎn)和遠(yuǎn)程系統(tǒng)之間配置一個(gè)無密碼的 SSH 連接。

首先,使用以下命令生成 SSH 密鑰對(duì):

ssh-keygen

它將創(chuàng)建一個(gè) SSH 密鑰對(duì),其中包含存儲(chǔ)在您主目錄的 .ssh/ 文件夾中的公鑰和私鑰。

如何設(shè)置Ansible庫存文件

私鑰應(yīng)保留在 Ansible 控制節(jié)點(diǎn)上,絕不能泄露或與任何人共享,以避免中間人攻擊等安全漏洞。另一方面,您可以輕松地與您選擇的任何遠(yuǎn)程系統(tǒng)共享公鑰。

要成功配置無密碼 SSH 連接,您需要將公鑰復(fù)制到遠(yuǎn)程節(jié)點(diǎn)。ssh-copy-id您可以使用所示語法中的命令輕松執(zhí)行此操作:

ssh-copy-id user@server-ip-address

在我們的例子中,命令將是:

ssh-copy-id root@198.148.118.68

出現(xiàn)提示時(shí)輸入遠(yuǎn)程系統(tǒng)的密碼,然后按 ENTER 鍵將公鑰復(fù)制到服務(wù)器。

如何設(shè)置Ansible庫存文件

為了驗(yàn)證我們是否可以在沒有密碼身份驗(yàn)證的情況下登錄到遠(yuǎn)程系統(tǒng),我們將嘗試通過 SSH 登錄,方法是證明用戶名后跟“@”,然后是遠(yuǎn)程節(jié)點(diǎn)的 IP 地址。

ssh root@198.148.118.68

下面提供的代碼片段是對(duì)我們剛剛在沒有密碼的情況下登錄到遠(yuǎn)程 node1 的確認(rèn)。

如何設(shè)置Ansible庫存文件

公鑰保存在~/.ssh/authorized_keys遠(yuǎn)程節(jié)點(diǎn)的文件中。

您可以仔細(xì)檢查它是否存在:

cat ~/.ssh/authorized_keys

如何設(shè)置Ansible庫存文件

對(duì)所有節(jié)點(diǎn)重復(fù)相同的過程,并確保您可以在沒有密碼身份驗(yàn)證的情況下通過 SSH 連接到它們。

創(chuàng)建自定義庫存文件

Ansible 使用位于的默認(rèn)清單文件來引用托管節(jié)點(diǎn),除非您通過該選項(xiàng)/etc/ansible/hosts指定自定義清單文件。-i

默認(rèn)的清單文件工作得很好。實(shí)際上,您可以使用遠(yuǎn)程節(jié)點(diǎn)的 IP 地址將其放入其中,如下所示:

198.148.118.68
198.148.118.129

然后,您可以在遠(yuǎn)程節(jié)點(diǎn)上執(zhí)行 ping 模塊,而無需明確指定遠(yuǎn)程主機(jī):

sudo ansible -m ping all

如何設(shè)置Ansible庫存文件

當(dāng)然,這沒有任何問題,但是當(dāng)面對(duì)不同項(xiàng)目下的多個(gè)托管節(jié)點(diǎn)時(shí),最佳做法是為每個(gè)項(xiàng)目創(chuàng)建單獨(dú)的清單文件。通過這種方式,您將促進(jìn)資源跟蹤并更輕松地與其他系統(tǒng)管理員協(xié)作,而無需讓每個(gè)人都糾結(jié)在一個(gè)hosts文件中。

現(xiàn)在,讓我們創(chuàng)建一個(gè)自定義清單文件。為此,您應(yīng)該首先創(chuàng)建一個(gè)項(xiàng)目目錄并導(dǎo)航到其中:

mkdir project_dir && cd project_dir

接下來,創(chuàng)建一個(gè)簡(jiǎn)單的文本文件。您可以給它任意名稱:

nano inventory

然后使用它們的 IP 地址每行列出您的托管節(jié)點(diǎn):

198.148.118.68
198.148.118.129

保存更改并退出文件。ansible-inventory現(xiàn)在您可以使用命令驗(yàn)證托管主機(jī)。請(qǐng)注意,使用該-i選項(xiàng)時(shí)必須引用清單文件的完整路徑。

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

從這里,您可以使用自定義清單文件在托管主機(jī)上執(zhí)行劇本或 ping 模塊:

sudo ansible -i project_dir/inventory -m ping all

如何設(shè)置Ansible庫存文件

將節(jié)點(diǎn)組織成組和子組

為了更清晰的清單文件和更輕松地管理您的受管節(jié)點(diǎn),通常建議將它們組織成組和子組。

一臺(tái)主機(jī)可以屬于一個(gè)或多個(gè)組。在下面的示例中,我們webservers以 INI 格式將 2 臺(tái)主機(jī)分組到該組下。

[webservers]
198.148.118.68
198.148.118.129

下面的清單文件更好地說明了多臺(tái)服務(wù)器被分為不同的組,例如webservers,load_balancers和db_servers.

[webservers]
198.148.118.68
198.148.118.129
198.148.118.150
198.148.118.175

[load_balancers]
198.148.118.100
198.148.118.200

[db_servers]
198.148.118.50
198.148.118.60

再次運(yùn)行ansible-inventory命令,您應(yīng)該會(huì)看到與此處類似的安排:

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

您還可以將多個(gè)組定義為“父”組下的“子”組。在這種情況下,“父”組成為元組。以下是如何使用元組重新組織以前的清單的說明:

[childgroup1]
node1
node2

[childgroup2]
node3
node4

[parent1:children]
childgroup1
childgroup2

考慮到這一點(diǎn),我們可以重新組織我們的庫存,如下所示。

[webservers_miami]
198.148.118.68
198.148.118.129

[webservers_virginia]
198.148.118.150
198.148.118.175

[load_balancer_ohio]
198.148.118.100

 [load_balancer_texas]
198.148.118.200

[db_server_miami]
198.148.118.50

[db_server_virginia]
198.148.118.60

[webservers:children]
webservers_miami
webservers_virginia

[load_balancers:children]
load_balancer_ohio
load_balancer_texas

[db_servers:children]
db_server_miami
db_server_virginia

再次,您可以按如下方式驗(yàn)證庫存清單:

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

這樣的安排可以幫助您使用劇本來定位較小的服務(wù)器組,而不是一次定位所有節(jié)點(diǎn)。例如,您可以在[webservers_miami]子組中執(zhí)行 ping 模塊,如下所示:

sudo ansible -i project_dir/inventory -m ping webservers_miami

如何設(shè)置Ansible庫存文件

使用模式來定位命令的執(zhí)行

使用 Ansible 運(yùn)行劇本或臨時(shí)命令時(shí),您需要提供通常在清單文件中定義的目標(biāo)。模式可以靈活地定位清單文件中的特定主機(jī)或組。它們支持通配符、正則表達(dá)式等等。

為了演示如何使用模式,請(qǐng)考慮下面的清單文件:

[webservers]
198.148.118.68
198.148.118.129
198.148.118.160

[db_servers]
198.148.118.55
198.148.118.110

[staging]
198.148.118.160
198.148.118.110

[production]
198.148.118.68
198.148.118.129
198.148.118.55

假設(shè)您要執(zhí)行一個(gè)僅針對(duì)生產(chǎn)環(huán)境中運(yùn)行的 Web 服務(wù)器的臨時(shí)命令。在此清單中,只有兩個(gè)網(wǎng)絡(luò)服務(wù)器符合此條件:198.148.118.68和198.148.118.129。

您可以簡(jiǎn)單地使用以下匹配模式,而不是分別針對(duì)兩個(gè)目標(biāo)主機(jī):

sudo ansible webservers:\&production -m ping

& 符號(hào) - & - 表示邏輯運(yùn)算 AND。這意味著有效的主機(jī)必須在兩個(gè)組中,即webservers和production。由于這是一個(gè)臨時(shí)命令,我們需要\在命令中插入轉(zhuǎn)義符。

要定位webservers組中但不在 中的主機(jī)production,請(qǐng)使用以下模式:

sudo ansible webservers:\!production -m ping

此處,!符號(hào)表示邏輯運(yùn)算符 NOT,它表示有效主機(jī)不得包含在production組中。再一次,我們需要包含\轉(zhuǎn)義字符,因?yàn)槲覀冋谶\(yùn)行一個(gè)必須由 shell 解釋的臨時(shí)命令。

下表提供了在使用 Ansible 自動(dòng)化工具運(yùn)行臨時(shí)命令和劇本時(shí)可以使用的其他模式。

圖案 目標(biāo)
all 清單文件中的所有目標(biāo)
node1 單個(gè)節(jié)點(diǎn)或主機(jī) (?node1)
node1:node2 和node1_node2
group1 group1僅適用于所有主機(jī)
group1:group2 適用于所有g(shù)roup1主機(jī)group2
group1:\&group2 兩者兼有的主機(jī)或group1服務(wù)器group2
group1:\&group2 主機(jī)或服務(wù)器在group1但不在group2

配置主機(jī)別名

別名是引用受管節(jié)點(diǎn)的一種簡(jiǎn)單方法。就像昵稱一樣,它們可以幫助您輕松識(shí)別您的資源,而無需在運(yùn)行劇本時(shí)回憶復(fù)雜的名稱。

要定義別名,只需指定一個(gè)別名,后跟一個(gè)與遠(yuǎn)程主機(jī)的主機(jī)名或 IP 相對(duì)應(yīng)的變量名。

alias variable_name

例如:

primary_server   ansible_host=198.148.118.68`
secondary_server ansible_host=198.148.118.129`

然后驗(yàn)證清單列表以檢查節(jié)點(diǎn)是否被別名引用。

ansible-inventory -i project_dir/inventory --list

如何設(shè)置Ansible庫存文件

從輸出中我們可以看到服務(wù)器現(xiàn)在被它們的別名所引用。您還可以通過使用別名引用節(jié)點(diǎn)來運(yùn)行臨時(shí)命令:

sudo ansible -i project_dir/inventory -m ping primary_server

如何設(shè)置Ansible庫存文件

配置變量名稱

在 Ansible 中,變量用于處理托管主機(jī)之間的差異。使用變量,您可以在執(zhí)行劇本或臨時(shí)命令時(shí)表示系統(tǒng)之間的差異。例如,在上一節(jié)中,我們使用了ansible_host簡(jiǎn)單地告訴 Ansible 在哪里搜索托管節(jié)點(diǎn)的 IP 地址的變量。

在清單文件中,您可以使用變量來定義主機(jī)名、連接類型、端口等。在下面的示例中,我們進(jìn)一步定義了用于啟動(dòng)到節(jié)點(diǎn)的遠(yuǎn)程連接的用戶。

在這種情況下,我們有兩個(gè)變量:ansible_host指定主機(jī)的 IP,以及ansible_user指定用于連接遠(yuǎn)程主機(jī)的用戶。

server01 ansible_host=198.148.118.68 ansible_user=root
server02 ansible_host=198.148.118.129 ansible_user=user

此外,您還可以創(chuàng)建主機(jī)組并在組級(jí)別具有變量。在這個(gè)例子中,我們有兩個(gè)獨(dú)立的變量組——[webservers_a:vars]它們[webservers_b:vars]定義了連接到被管節(jié)點(diǎn)的用戶。

[webservers_a]
server01 ansible_host=198.148.118.68

[webservers_b]
server02 ansible_host=198.148.118.129

[webservers_a:vars]
ansible_user=root

[webservers_b:vars]
ansible_user=user

結(jié)論

在本教程中,我們深入研究了 Ansible 清單,并演示了如何將托管主機(jī)組織成組和子組。然后我們更進(jìn)一步,演示了如何使用模式來定位特定的主機(jī)組,觸及別名,最后用允許某些關(guān)鍵參數(shù)因主機(jī)而異的變量結(jié)束。

文章鏈接: http://m.qzkangyuan.com/13974.html

文章標(biāo)題:如何設(shè)置Ansible庫存文件

文章版權(quán):夢(mèng)飛科技所發(fā)布的內(nèi)容,部分為原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明來源,網(wǎng)絡(luò)轉(zhuǎn)載文章如有侵權(quán)請(qǐng)聯(lián)系我們!

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。

給TA打賞
共{{data.count}}人
人已打賞
IDC云庫

2023年如何保護(hù)您的加密貨幣安全

2022-12-8 14:59:44

IDC云庫

什么是機(jī)器學(xué)習(xí)?機(jī)器學(xué)習(xí)項(xiàng)目可能的機(jī)器學(xué)習(xí)硬件選擇

2022-12-8 15:20:22

0 條回復(fù) A文章作者 M管理員
    暫無討論,說說你的看法吧
?
個(gè)人中心
購物車
優(yōu)惠劵
今日簽到
有新私信 私信列表
搜索
主站蜘蛛池模板: 万荣县| 莱芜市| 神农架林区| 衡阳县| 洮南市| 怀集县| 澜沧| 望江县| 吉安市| 信宜市| 堆龙德庆县| 遂溪县| 视频| 西充县| 左贡县| 化州市| 宁国市| 游戏| 澄城县| 南雄市| 夏邑县| 新河县| 会同县| 二连浩特市| 马龙县| 尚志市| 盐津县| 乌恰县| 兖州市| 永昌县| 绥芬河市| 日土县| 子长县| 离岛区| 赤峰市| 清徐县| 姜堰市| 新沂市| 台东市| 芒康县| 胶南市|